from django.db import models
from django.contrib.auth.models import User


class Fans(models.Model):
    """
    粉丝表
    用户(关系属性)、 粉丝(关系属性)、 是否互相关注 、 关注时间、互关时间

    """
    user = models.ForeignKey(to=User, on_delete=models.CASCADE, verbose_name='所属用户',
                             db_comment='粉丝所属用户',null=True, blank=True, related_name='fans_list')

    fans = models.ForeignKey(to=User, on_delete=models.CASCADE, verbose_name='粉丝',
                             db_comment='粉丝', null=True, blank=True)


    is_mutual = models.BooleanField(verbose_name='是否互相关注', db_comment='是否互相关注', default=False)
    mutual_time= models.DateTimeField(verbose_name='互关时间', db_comment='互关时间', null=True, blank=True)
    create_time = models.DateTimeField(verbose_name='关注时间', db_comment='关注时间', auto_now_add=True)

    class Meta:
        db_table='tb_fans'

class Advice(models.Model):
    """
    公告表
    标题、 内容、 发布时间、状态、录入时间、修改时间、是否删除
    """
    title = models.CharField(verbose_name='公告标题', db_comment='公告标题', max_length=100)
    content = models.TextField(verbose_name='公告内容', db_comment='公告内容')
    publish_time = models.DateTimeField(verbose_name='发布时间', db_comment='发布时间', null=True, blank=True)
    state = models.BooleanField(verbose_name='公告状态', db_comment='公告状态', default=True)
    create_time = models.DateTimeField(verbose_name='录入时间', db_comment='录入时间', auto_now_add=True)
    update_time = models.DateTimeField(verbose_name='修改时间', db_comment='修改时间', auto_now=True)
    is_delete = models.BooleanField(verbose_name='是否删除', db_comment='是否删除', default=False)

    class Meta:
        db_table = 'tb_advice'


class AdviceRead(models.Model):
    """
    公告阅读表
    公告(关系属性) 、 已读用户(关系属性) 、读取时间
    """
    advice = models.ForeignKey(to=Advice, on_delete=models.CASCADE, verbose_name='公告',
                               db_comment='公告', null=True, blank=True)
    user = models.ForeignKey(to=User, on_delete=models.CASCADE, verbose_name='用户',
                             db_comment='用户', null=True, blank=True)
    read_time = models.DateTimeField(verbose_name='阅读时间', db_comment='阅读时间', auto_now_add=True)

    class Meta:
        db_table = 'tb_advice_read'

class Notify(models.Model):
    """
    通知表
    通知类型 、 通知内容、用户(关系属性)、 通知时间、 是否已读、 读取时间
    """
    type=models.CharField(verbose_name='通知类型', db_comment='通知类型', max_length=100)
    content = models.TextField(verbose_name='通知内容', db_comment='通知内容')
    user = models.ForeignKey(to=User, on_delete=models.CASCADE, verbose_name='用户',
                             db_comment='用户', null=True, blank=True)
    notify_time = models.DateTimeField(verbose_name='通知时间', db_comment='通知时间', auto_now_add=True)

    is_read = models.BooleanField(verbose_name='是否已读', db_comment='是否已读', default=False)
    read_time = models.DateTimeField(verbose_name='读取时间', db_comment='读取时间', null=True, blank=True)
    class Meta:
        db_table = 'tb_notify'


class Letter(models.Model):
    """
    私信表
    发送用户(关系属性) 、  接收用户(关系属性)、 内容、 发送时间、是否已读、 读取时间
    """
    sender= models.ForeignKey(to=User, on_delete=models.CASCADE, verbose_name='发送用户',related_name='sender')
    receiver = models.ForeignKey(to=User, on_delete=models.CASCADE, verbose_name='接收用户',related_name='receiver')
    content = models.TextField(verbose_name='私信内容', db_comment='私信内容')
    send_time = models.DateTimeField(verbose_name='发送时间', db_comment='发送时间', auto_now_add=True)
    is_read = models.BooleanField(verbose_name='是否已读', db_comment='是否已读', default=False)
    read_time = models.DateTimeField(verbose_name='读取时间', db_comment='读取时间', null=True, blank=True)
    class Meta:
        db_table = 'tb_letter'


class Swiper(models.Model):
    """
    轮播图广告表
    图片地址 、超链接地址 、是否启用 、是轮播图还是广告、  录入时间、是否删除
    """
    image=models.ImageField(verbose_name='广告图片', db_comment='广告图片', upload_to='swiper')
    link = models.CharField(max_length=50,verbose_name='广告链接', db_comment='广告链接', null=True, blank=True)
    is_enable = models.BooleanField(verbose_name='是否启用', db_comment='是否启用', default=True)
    type=models.CharField(verbose_name='类型', db_comment='类型', max_length=100,
                          choices=(('0','轮播图'),('1','广告')), default='0')
    create_time = models.DateTimeField(verbose_name='录入时间', db_comment='录入时间', auto_now_add=True)
    is_delete = models.BooleanField(verbose_name='是否删除', db_comment='是否删除', default=False)
    class Meta:
        db_table = 'tb_swiper'
